public class DocumentConverter {
//    private static final Logger logger = Logger.getLogger(DocumentConverter.class);
//    private int pageCount;
//    static {
//        if (System.getProperty("os.name").toLowerCase().startsWith("windows")) {
//            String dll = "gsdll" + System.getProperty("sun.arch.data.model") + ".dll";
//            URL url = DocumentConverter.class.getResource(dll);
//            String path = url.getPath();
//            System.load(path);
//            logger.info("Load " + dll + " success!");
//            dll = "jacob-1.17-x" + System.getProperty("sun.arch.data.model") + ".dll";
//            url = DocumentConverter.class.getResource(dll);
//            path = url.getPath();
//            System.load(path);
//            logger.info("Load " + dll + " success!");
//        }
//    }
// 
//    public boolean pdf2png(String source, String pdf, int density) {
//        boolean success = true;
//        PDFDocument document = new PDFDocument();
//        try {
//            document.load(new File(source));
//            SimpleRenderer renderer = new SimpleRenderer();
//            pageCount = renderer.getProcessCount();
//            renderer.setResolution(density);
//            List<Image> images = renderer.render(document);
//            for (int i = 0; i < images.size(); i++) {
//                ImageIO.write((RenderedImage) images.get(i), "png", new File((pdf + "/" + i) + ".png"));
//            }
//        } catch (Exception e) {
//            e.printStackTrace();
//            success = false;
//        }
//        return success;
//    }
// 
//    private boolean doc2pdf(String source, String pdf) {
//        try {
//            ActiveXComponent app = new ActiveXComponent("Word.Application");
//            ComThread.InitSTA();
//            Dispatch docs = app.getProperty("Documents").toDispatch();
//            /**
//             * 第一个true：是否只读
//             * 第二个true：是否有标题
//             * 第三个false：文件是否可见
//             */
//            Dispatch doc = Dispatch.call(docs, "Open", source, true, true, false).toDispatch();
//            Dispatch.call(doc, "SaveAs", pdf, 17);
//            Dispatch.call(doc, "Close", false);
//            app.invoke("Quit", false);
//            ComThread.Release();
//        } catch (Exception e) {
//            e.printStackTrace();
//            return false;
//        }
//        return true;
//    }
// 
//    private boolean ppt2pdf(String source, String pdf) {
//        try {
//            ActiveXComponent app = new ActiveXComponent("PowerPoint.Application");
//            ComThread.InitSTA();
//            Dispatch ppts = app.getProperty("Presentations").toDispatch();
//            Dispatch ppt = Dispatch.call(ppts, "Open", source, true, true, false).toDispatch();
//            Dispatch.call(ppt, "SaveAs", pdf, 32);
//            Dispatch.call(ppt, "Close");
//            app.invoke("Quit");
//            ComThread.Release();
//        } catch (Exception e) {
//            e.printStackTrace();
//            return false;
//        }
//        return true;
//    }
// 
//    private boolean xls2pdf(String source, String pdf) {
//        try {
//            ActiveXComponent app = new ActiveXComponent("Excel.Application");
//            ComThread.InitSTA();
//            Dispatch xlses = app.getProperty("Workbooks").toDispatch();
//            Dispatch xls = Dispatch.invoke(xlses, "Open", Dispatch.Method, new Object[] { source, true, true }, new int[3]).toDispatch();
//            Dispatch.call(xls, "SaveAs", pdf, 57);
//            Dispatch.call(xls, "Close");
//            app.invoke("Quit");
//            ComThread.Release();
//        } catch (Exception e) {
//            e.printStackTrace();
//            return false;
//        }
//        return true;
//    }
// 
//    public boolean saveAsPdf(String source, String pdf) {
//        int dotLocation = source.lastIndexOf(".");
//        if (dotLocation < 0 || dotLocation + 1 == source.length()) {
//            logger.warn("Unknow file type!");
//            return false;
//        }
//        String type = source.substring(dotLocation + 1).toLowerCase();
//        boolean result = false;
//        switch (type) {
//        case "doc":
//        case "docx":
//            result = doc2pdf(source, pdf);
//            break;
//        case "ppt":
//        case "pptx":
//        case "pps":
//        case "ppsx":
//            result = ppt2pdf(source, pdf);
//            break;
//        case "xls":
//        case "xlsx":
//            result = xls2pdf(source, pdf);
//            break;
//        default:
//            logger.warn("Unknow file type!");
//            return false;
//        }
//        logger.info(String.format("Convert %s to %s %s!", source, pdf, result ? "success" : "fail"));
//        return result;
//    }
// 
//    public int getPageCount() {
//        return pageCount;
//    }
}